import { z } from 'zod';

export const createPostSchema = z.object({
  title: z.string().min(1, '标题不能为空').max(200, '标题不能超过200个字符'),
  content: z.string().min(1, '内容不能为空'),
  excerpt: z.string().max(500, '摘要不能超过500个字符').optional(),
  slug: z.string().min(1, 'URL别名不能为空').max(100, 'URL别名不能超过100个字符'),
  status: z.enum(['DRAFT', 'PUBLISHED', 'ARCHIVED']).default('DRAFT'),
  coverImage: z.string().url('封面图片必须是有效的URL').optional().nullable(),
  authorId: z.string().min(1, '作者ID不能为空'),
  tags: z.array(z.string()).default([]),
});

export const updatePostSchema = createPostSchema.partial();

export const createUserSchema = z.object({
  email: z.string().email('请输入有效的邮箱地址'),
  name: z.string().min(1, '姓名不能为空').max(100, '姓名不能超过100个字符'),
  password: z.string().min(6, '密码至少需要6个字符'),
  role: z.enum(['USER', 'ADMIN']).default('USER'),
});

export const loginSchema = z.object({
  email: z.string().email('请输入有效的邮箱地址'),
  password: z.string().min(1, '密码不能为空'),
});

export const createCommentSchema = z.object({
  content: z.string().min(1, '评论内容不能为空').max(1000, '评论内容不能超过1000个字符'),
  author: z.string().min(1, '作者姓名不能为空').max(100, '作者姓名不能超过100个字符'),
  email: z.string().email('请输入有效的邮箱地址'),
  postId: z.string().min(1, '文章ID不能为空'),
});

export type CreatePostInput = z.infer<typeof createPostSchema>;
export type UpdatePostInput = z.infer<typeof updatePostSchema>;
export type CreateUserInput = z.infer<typeof createUserSchema>;
export type LoginInput = z.infer<typeof loginSchema>;
export type CreateCommentInput = z.infer<typeof createCommentSchema>;
